home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / gina15.zip / TODO < prev   
Text File  |  1992-02-27  |  5KB  |  148 lines

  1. Internes Dokument ! @(#)TODO    1.6 2/26/92
  2.  
  3. Diese Datei enth"alt Gedanken zu Erweiterungen und Verbesserungen zu C++ GINA.
  4. Idee: Jeder schreibt seine Ideen auf, jeder kann Anmerkungen hinzuf"uegen.
  5. ->> neuere Sachen nach vorne !!!
  6.  
  7. AB 20.2.92
  8. ==========
  9.  
  10. - Die Funktion GnApplication::app_class() sollte entfernt werden, da ihre
  11.   Funktionalitaet vom Meta-Object-Protokol uebernommen werden kann; Man
  12.   muss dann GnApplication::Class()->Name() benutzen.
  13.  
  14. - Die Funktion GnApplication::create_document() sollte in CreateEmptyDocument()
  15.   umbenannt werden, um zu verdeutlichen, dass ein neues, leeres Dokument
  16.   erzeugt wird. (Im Zuge der Anpassung an Namenskonventionen.)
  17.   
  18. - Die Funktion GnDocument::create_view() kann weg, da ein View meist explizit 
  19.   vom Programmierer erzeugt wird. Ausserdem entspricht sie nicht der 
  20.   Philosophie, das es mehrere und verschiedenartige Views auf ein Dokument 
  21.   geben kann.
  22.  
  23. - In allen Makefiles muss /usr/lang in /vol/lang umbenannt werden, da z.B.
  24.   auf jumbo_f3/f3svb kein C++ unter /usr/lang existiert.
  25.  
  26. AB 6.2.92
  27. ==============
  28.  
  29. Das Menusystem muss ueberarbeitet werden:
  30.  
  31.   - Anpassung an Lisp-Gina funktionalitaet (Handbuch)
  32.  
  33.   - Mnemonics, Accelerator
  34.  
  35.   - Loeschen, Hierarchische Menues, Toggle-Eintraege
  36.   
  37.   - Toggle/Radio-Groups in Menues
  38.  
  39. Andreas 31.1.92
  40. ===============
  41.   - ViewObjekte sollten nicht im View, sondern im Dokument abgelegt sein.
  42.     VORTEIL: Es kann gleichzeitig mehrere Views geben, die verschiedene
  43.          Ausschnitte einer Graphik zeigen.
  44.  
  45.          Ausserdem: Bessere Trennung zwischen Model und View/Contoller im
  46.             Sinne von MVC moeglich. Da ViewObjekte gespeichert
  47.             werden, sind sie als Daten zu betrachten und damit
  48.             dem Model zuzuordnen und somit im Dokument (=Model einer
  49.             Anwendung) statt im View (= View+Controller einer Anw.)
  50.             zu speichern. Naeheres siehe Doku zu ET++.
  51.  
  52.   - Views sollten keine Anwendungsdaten mehr enthalten (ViewObjekte).
  53.     ViewObjekte muessen in einen Anwendungsteil und einen Darstellungsteil 
  54.     aufgespalten werden.
  55.  
  56.   - Widgets sollten ueberhaupt keine Anwendungsdaten mehr enthalten. Diese 
  57.     sollten alle im Dokument enthalten sein. 
  58.  
  59.   - create_windows sollte nach dem Initialisieren bzw. Laden des Dokumentes
  60.     aufgerufen werden, d.h. wenn die Fenster erzeugt werden stehen alle
  61.     Anwendungsdaten bereits zur Verfuegung. Vorteile sind:
  62.  
  63.       1. read_from_stream() braucht sich nicht mehr um ein Update der Fenster
  64.      zu kuemmern (manchmal ist Update noch nicht moeglic, weil X-Windows
  65.      noch nicht erzeugt sind, etc.).
  66.  
  67.       2. Die Fenster muessen nur einmal an die Anwendungsdaten angepasst
  68.      werden (sonst zweimal).
  69.  
  70.       3. Insgesamt erhaelt man eine bessere Trennung zwischen Anwendungsdaten
  71.      und den Darstellungskomponenten und damit eine bessere innere Struktur
  72.      der Software.
  73.  
  74.   - Es muss ein allgemeiner Change/Update-Mechanismus spezifiziert und 
  75.     realisiert werden. Changed() & Update() ohne Parameter scheint zu allgemein
  76.     und fuehrt zu Ineffizienz. Wie soll parameterisiert werden ? Ueber
  77.     Vererbung mit Unterklassen von Observer und Observed ? Ueber Parameter,
  78.     also Changed(int reason, void *detail) etc. ? Oder gibt man nur
  79.     Richtlinien vor, und erlaubt dem Programmierer, problemangepasste
  80.     Changed(...) und Update(...) Funktionen zu schreiben ?
  81.  
  82.   - GnDoubleLinkedList::_Position() implementieren.
  83.     Konstruktor GnDoubleLinkedListIterator(GnDoubleLinkedListIterator &) impl.
  84.  
  85.   - generische, dynamische Arrays implementieren, evtl. auch mehrdimensional.
  86.     Claus Riemann ? Vorbild LEDA
  87.  
  88.   - Fehlende META_IMPL bzw. ImplGeneric.. fuehren zu undefinierten vtbls.
  89.  
  90.   - Im "Debug" Menu sollte ein Eintrag "Show Classes" sein, der in einem
  91.     GraphView (Andreas G.) die Klassenhierarchie anzeigt.
  92.  
  93.   - Es sollten Namenskonventionen und Programmierrichtlinien aufgestellt 
  94.     werden und GINA++ daran angepasst werden.
  95.  
  96. Robert 21.5.91
  97. ==============
  98. - Text-Viewobjekt (Tastaturhandling) (Claus Riemann)
  99.  
  100. Robert 15.5.91
  101. ==============
  102. - Cut & Paste muss eingebaut und erweitert werden zu
  103.   Publish & Subscribe: Links zwischen Dokumenten mit automatischer
  104.   Datenaktualisierung.
  105.  
  106. - virtuelle Funktionen sollten nicht Inline vereinbart werden,
  107.   da das je nach Technik des Includierens sehr viel Speicherplatz kosten kann.
  108.  
  109. Robert 6.5.91
  110. =============
  111. - Wir brauchen Mechanismen zur Synchronisation der Bearbeitung von
  112.   Dokumenten.
  113.  
  114. ==============================================================================
  115.  
  116. Andreas (24.5.91)
  117.  
  118. - Fallback Resourcen anschliessen: Vorteil: man wird unabhaengig von .Xdefaults
  119.  
  120. - GINA++ als shared library ?
  121.  
  122. ==============================================================================
  123.  
  124. Andreas (30.7.91)
  125.  
  126. - Collection Klassen von ET++ oder NIHCL integrieren ?!
  127.      - Read/Write Konzepte (Karl Heinz) ausprobieren
  128.      - Generizitaet ?
  129.      - Makros ?
  130.      - Type Cast ?
  131.      - Auf 3.0 warten ?
  132.  
  133. - Cut/Copy/Paste
  134.     - generisch loesen
  135.     - auch ueber Anwendungen hinweg
  136.  
  137. - Dokumente Save/Open
  138.     - Generisch (ohne write_to_stream)
  139.  
  140. - View-Objekte ueberarbeiten
  141.     - GnDirectM. und GnViewObject zu einer Klassen zusammenfassen.
  142.  
  143. - Postscript-Drucken
  144.  
  145. - XmSelectionBox/XmFileSelectionBox in abstrakte Selection-Klassen integrieren.
  146.  
  147.  
  148.